search
HomeDatabaseMysql Tutorial读《Oracle从入门到精通》笔记--持续更新中

第一章 Oracle 11g概述 1.6节 启动与关闭数据库实例 启动数据库: Startup [nomount|mount|open|force][resetrict][pfile=filename] 解释:nomount --- 表示启动实例不加载数据库 mount --- 表示启动实例、加载数据库并保持数据库的关闭状态 open --- 表示启

第一章 Oracle 11g概述
1.6节 启动与关闭数据库实例
启动数据库:
Startup [nomount|mount|open|force][resetrict][pfile=filename]
解释:nomount ---> 表示启动实例不加载数据库
mount ---> 表示启动实例、加载数据库并保持数据库的关闭状态
open ---> 表示启动实例、加载并打开数据库(默认选项)

force ---> 表示终止实例并重新启动数据库
resetrict  --> 用于指定受限制的会话方式启动数据库
pfile ---> 用于指定启动实例是所使用的文本参数文件,filename 就是文件名。
关闭数据库
shutdown [normal|transactional|immediate|abort] 
解释:normal ---> 表示以正常方式关闭数据库(阻止新建连接,等待正在连接的用户主动断开)
transactional ---> 表示在当前所有的活动事务被提交完毕之后,关闭数据库(阻止新建连接和开始新事务,等到有活动的事务提交后再断开用户连接)
immediate   ---> 表示在尽可能短的时间内立即关闭数据库(阻止新建连接和开始新事务,回退未提交的事务,关闭数据库)
abort ---> 表示以终止方式来关闭数据库(具有一定的强制性和破坏性)
第二章 Oracle 11g 体系
2.2 逻辑存储结构
Oracle 数据库 -> 表空间 -> 表   -> 数据段 -> 数据区 -> 数据块
索引 -> 索引段 ...
视图 -> ...
回滚段
临时段
总之,Oracle数据库由多个表空间组成(数据库自身也属于逻辑概念),而表空间由多个段组成,段由多个数据区组成,数据区由多个数据块组成。

2.2.1 数据块(Data Blocks)
数据块:Oracle数据库逻辑存储结构中最小的逻辑单位,也是执行数据库输入输出操作的最小存储单位。
在v$parameter数据词典中查询标准数据块的大小:
select name,value from v$parameter where name = 'db_block_size';
数据块结构:块头(基本信息,物理地址、段的类型),表目录(表相关信息),行目录,空余空间(未使用),行数据(已使用)。
2.2.2 数据区(Extent)
数据区:Oracle的最小的分配单位。数据区是表中数据增长的基本单位,在Oracle中,分配存储空间就是以数据区位单位的。
一个Oracle对象包含至少一个数据区,设置一个表或索引的存储参数包含设置它的数据区大小。
2.2.3 段(Segment)
段是一个独立的逻辑存储结构,用于存储表、索引或簇等占用空间的数据对象。一个段只属于一种特定的数据对象,每当创建一个独立的数据对象时,都将为它创建一个段。
段是为特定的数据对象(如表、索引、回滚等)分配的一些列数据区。段内包含的数据区可以不连续,并且可以跨越多个文件,使用段的目的是用来保存特定的数据对象。
段:数据段(存表的数据,通过添加新的数据区来实现表的增大)、索引段、回滚段(保存修改前的旧值)、临时段。
2.2.4 表空间(TableSpace)
表空间是Oracle中最大的逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象,任何数据对象在创建时都必须指定存储在摸个表空间中。表空间(属于逻辑存储结构)
与数据文件(属于物理存储结构)相对应,一个表空间由一个或或多个数据文件组成,一个数据文件只属于一个表空间;Oracle数据的存储空间在逻辑上表现为表空间,而在物理
上表现为数据文件。举个例子来说,表空间相当于操作系统中的文件夹,而数据文件就相当于文件夹中的文件。每个数据库至少有一个表空间(即SYSTEM表空间),表空间的大小等于所有
从属于他的数据文件的大小。
由于表空间在物理上(即磁盘)包括操作系统中的一个或多个数据文件,因此在表空间中创建的数据对象就存在以下两种情况:
(1)若表空间只包含一个数据文件,则该表空间中的所有对象都存储在这个数据文件中。
(2)若表空间包含多个数据文件,则Oracle即可将数据对象存储在该表空间中的任意一个数据文件中,也可以将同一个数据对象中的数据分布在表空间的多个数据文件中。

系统默认的表空间:
SYSTEM表空间 --- 系统表空间 : 用于存放Oracle系统内部表和数据词典的数据,如表明、列名、用户名等。
SYSAUX表空间 --- SYSTEM表空间的辅助表空间,降低SYSTEM的负荷。
UNDO表空间   --- 撤销表空间,用于存储撤销信息的表空间。一般在Oracle实例后,Oracle系统自动创建一个名字为“UNDOTBS1”的撤销表空间,对应的数据文件是“UNDOTBS01.DBF”.
USERS表空间  --- 用户表空间,是Oracle建议用户使用的表空间,可以在这个表空间上创建各种数据对象,比如创建表、索引、用户等数据对象。Oracle系统的样例用户SCOTT对象就存放在USRS表空间中。
除了Oracle系统默认创建的表空间外,用户可根据应用系统的实际情况及其所要存放对象的类型创建多个自定义的表空间,以区分用户数据与系统数据。此外,不同应用系统的数据应存放在不同的表空间上,
而不同的表空间的文件应存放在不同的硬盘上,从而减少I/O冲突,提高应用系统的操作性能。




2.3 物理存储结构
Oracle数据库的物理存储结构由多个物理文件组成,主要有数据文件、控制文件、日志文件、重做文件、归档日志文件、参数文件、口令文件和警告文件等。
2.3.1 数据文件
用于保存用户应用程序数据和Oracle系统内部数据文件。在创建表空间是,Oracle会创建表空间的数据文件。在表空间中创建数据对象时,用户无法指定使用 哪个数据文件来进行存储,只能由Oracle系统负责为数据对象选择具体的数据文件存储。
读取数据: 判断是否存在高速缓存中,若不存在,从数据文件读取数据,并将数据保存在高速数据缓冲区;若存在,从高速缓存取数。
修改、插入数据:先报数据保存在高速缓冲区,然后由Oracle的后台进程DBWR决定如何将其写入响应的数据文件。
查看系统数据文件:
select * from dba_data_files;
select * from v$datafile;
大致分为:系统数据文件、撤销数据文件、用户数据文件
查看临时数据文件:
select * from dba_temp_files;
2.3.2 控制文件
控制文件是一个二进制文件,它记录了数据库的物理结构,其中包含数据库名、数据文件与日志文件的名字和位置、数据库创建日期等信息。控制文件一般在Oracle系统安装时或创建数据库实例时自动创建,控制文件所存放的路径由服务器参数文件
spileorcl.ora的control_files参数值来指定。
Oracle的启动:访问spfile文件  --> 分配Oracle系统全局区(SGA) ,此时Oracle实例处于安装状态,日志文件处于打开状态 --> 自动读取“控制文件”中的数据文件和日志文件中的信息 --> 打开数据文件和日志文件供用户使用。
数据库与控制文件关系:一对多。
查询控制文件信息:
select * from v$controlfile;
2.3.3 日志文件
分为:重做日志(Redo Log File)和归档日志(Archive Log File)。
重做日志:在数据库运行期间,当用户执行COMMIT命令时,数据库首先将每笔操作的原始记录写入到日志文件总,成功后,才把新的记录传递给应用程序。
日志信息查询:
select * from v$logfile;
Oracle系统在运行过程中产生的日志信息,首先被临时存放在系统全局区的重做日志缓冲区中,Commit命令(或日志缓冲区信息满1/3)时,LGWR进程(日志写入进程)将日志信息从一个日志组写满后接着写另一个日志组。当LGWR进程将所有的
能用的日志文件都使用过一遍将再次转向第一个日志组重新覆盖。

归档文件:
非归档模式:...
归档模式:当所有日志文件被写入一遍后,LGWR进程将转向第一个日志组进行重新覆写前,先由归档进程(ARCH)将日志文件中的信息读出写入归档文件。归档操作中,日志文件不能写入,这样会影响效率,而且会占用大量磁盘空间,影响性能。
归档文件查询是否采用归档:
select * from v$database;
查询归档文件所在路径:
show parameter log_archive_dest;
2.3.4 服务器参数文件
。。。(待完成)
2.2.5 密码文件、警告文件和跟踪文件
。。。(待完成)
2.4 Oracle 11g 服务器机构
。。。(待完成)
2.5 数据词典
数据词典是Oracle存放关于数据库内部信息的地方,用来描述数据库内部的运行和管理情况。
Oracle字典视图包括四个层次,分别为X$内部表、基础数据字典表、数据字典视图和动态性能视图。
2.5.1 Oracle数据词典概述
dba_  : 包含数据库实例的所有对象信息。
v$_   : 当前实例的动态视图,包含系统管理和系统优化等所使用的视图。
V_$   :是V$的同义词。
user_ :记录用户的对象信息。
gv_   : 分布式环境下所有实例的动态视图,包含系统管理和系统优化使用的视图。
GV_$  :是GV$的同义词。
all_  :记录用户的对象信息机被授权访问的对象信息。
X$    :是GV$视图的数据来源,oracle内部表。
2.5.2 Oracle 常用的数据词典
(1) 基本数据词典
Oracle对这些数据字典都分别建立了用户视图视图,不仅有更容易接受的名字,还隐藏了数据字典表表之间的关系,让我们字节通过视图来进行查询,
简单而形象,Oracle针对这些对象的范围,分别把视图命名为DBA_XXXX, ALL_XXXX和USER_XXXX


user_对象视图:描述了当前用户schema下的对象;
all_对象视图:描述了当前用户有权限访问到的所有对象的信息;
dba_对象视图:包括了所有数据库对象的信息;


注 意: 在创建数据库是会运行两个脚本。先运行catalog.sql,该脚本用来创建数据库的内部字典表。然后再运行catrpoc.sql,
该脚本用来创 建数据库内建的存储过程、包等pl\sql对象。如果我们是使用dbca来创建数据库,则dbca会自动调用这两个脚本。
否则在执行create database命令来创建时,则需要手工运行这两个脚本。 
(2)动态性能视图概述
所谓动态性能视图,就是指将内存里的数据或控制文件里的数据以表的形式展现出来。他们实际都是需表,并不是真正的表。
只不过是为了能够让我们更好的管理数据库的性能,所以将内存里的活动情况以表的形式展现出来。
只要数据库还在运行,就会不断更新动态性能视图。一旦数据库关闭或崩溃,动态性能视图里的数据就会全部丢失,下次重启时则会重新计算。
就像所有的数据字典的名词都存在dictionary里一样,v$fixed_table里存放了所有的动态性能视图的名称。
所有的动态性能的属主都是sys,且都以v$_开头,创建同名词时则都以v$开头。












SQL的基本执行顺序及优化:

from子句--执行顺序为从后往前、从右到左表名(最后面的那个表名为驱动表,执行顺序为从后往前, 所以数据量较少的表尽量放后)

where子句--执行顺序为自下而上、从右到左(表之间的连接必须写在其他Where 条件之前, 可以过滤掉最大数量记录的条件必须写在Where 子句的末尾)
数据库在处理SQL以前,都会去分析,发现查询的条件中是否有索引,如果有,县更具索引查找。那么优先根据姓名的条件,去检索,然后再去把通过索引得到的数据,
验证Oracle查询条件是从左向右还是从右向左:
方法一:(第1条语句执行不会出错,第2条语句会提示除数不能为零。说明从右 --> 左)
Select 'ok' From Dual Where 1 / 0 = 1 And 1 = 2;  
    Select 'ok' From Dual Where 1 = 2 And 1 / 0 = 1;   
select * from temp where to_number(t2)>1 and t1='sz';  
select * from temp where t1='sz' and to_number(t2)>1;      
方法二:(Output中可以清楚的看到结果)
Create Or Replace Function F1(v_In Varchar2) Return Varchar2 Is  
Begin  
Dbms_Output.Put_Line('exec F1');  
Return v_In;  
End F1;  
/  
Create Or Replace Function F2(v_In Varchar2) Return Varchar2 Is  
Begin  
Dbms_Output.Put_Line('exec F2');  
Return v_In;  
End F2;  
/
select 1 from dual where f1('1')='1' and f2('1')='1';  
select 1 from dual where f2('1')='1' and f1('1')='1';  
groupby--执行顺序从左往右分组

select子句--少用*号,尽量取字段名称。
ORACLE在解析的过程中, 会将依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 使用列名意味着将减少消耗时间。

sql 语句用大写的;因为 oracle 总是先解析 sql 语句,把小写的字母转换成大写的再执行

order by子句--执行顺序为从左到右排序,很耗资源


oracle 语句提高查询效率的方法:


  1:...where column in (select * from ... where ...);


   2:...where exists (select 'X' from ... where ...);


   第二种格式要远比第一种格式的效率高。
在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。
使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。


  避免使用having子句。HAVING 只会在检索出所有记录之后才对结果集进行过滤。


  这个处理需要排序,总计等操作。如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销。




分组:排序去组内最大:   
select deptno,ename,sal from
    (select deptno,ename,sal,row_number() over (partition by deptno order by sal desc) as sal_order
        from scott.emp) where sal_order     




decode函数:
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)
原理:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF



Oracle常用系统函数:
字符类型:select ASCII('c') from dual;    ---90
select CHR(90) from dual; ---z
select concat('hello ','world') from dual; select 'hello ' | 'world' from dual; ---hello world
select initcap('oh my god!') from dual; ---Oh My God!
select instr('oracle 11g','1',3,2) from dual;   ---9   从第3个字符开始查询字符串“1”第2次出现的位置。
select length('123') from dual;   --- 3
select lower('HELLO'),upper('hello') from dual; ---hello,HELLO
select ltrim('####hello###','#'),rtim('Hello     '),trim('#' from '##Hello###') from dual;
--- hello###,Hello,Hello
select replace('Bad Luck Bad Gril','Good') from dual; ---Good Luck Good Gril
select substr('MessageBox',8,3) from dual; ---Box
数字类函数:ABS(n) -->  绝对值
CELL(n) -->  >= n 的最小整数
COS(n) -->  n 的余弦值,n为弧度
EXP(n) -->  e 的n 次幂
FLORR(n) -->   LOG(n1, n2) -->  以n1为低n2的对数
MOD(n1,n2)  -->  n1 除以 n2 的余数
POWER(n1,n2)-->  n1 的 n2 次方
ROUND(n1,n2)-->  返回小数点最接近的整数
SIGN(n) -->  负数返回-1,整数返回1,0返回0
SIN(n) -->  返回正弦值
SQRT(n) -->  n 的平方根
TRUNC(n1,n2)-->  ....
 日期、时间类函数:
  select sysdate from dual;
  select add_months(sysdate,6) from dual;-- 返回sysdate加上6个月的结果
  last_day(d) --- 返回日期d的最后一天,d为时间类型
  months_between(d1,d2) ---d1,d2 为时间类型
  new_time(d1,t1,t2) ---d1 为日期类型,t1,t2 为字符串
 转换类函数:
  to_char(x) 或者 to_char(x,'YYYY-MM-DD')
  to_date(x) 或者 to_date(x,'YYYY-MM-DD')
  to_number(x)
  
  
  
  数据表的维护:
  1.维护表中的字段:
  增加:alter table table_name add(column_name type);
  删除:alter table table_name drop column column_name;
  alter table table_name drop(column_name1,column_name2);
  修改属性:alter table table_name modify column_name columntype;
  重命名表:alter table table_old_name rename to table_new_name;
  删除表:drop table table_name [cascade constraints];
  修改表的状态:alter table table_name read only;
  alter table table_name read write;
  数据的完整性和约束性:
  非空约束:alter table table_name modify column_name [not] null;
  主键约束:表中没有定义主键:alter table talbe_name add constraint 主键名 primary key(column_name);  --自己定义主键名
  alter table talbe_name add primary key(column_name);  --系统自动分配名称的主键约束
  表中存在主键时,先删除主键:alter table table_name drop constraint 主键名;
  唯一性约束:alter table table_name add constraint 约束名 unique(column_name);
  alter table table_name drop constraint 约束名;
  外键约束:alter table table_name add constraint 外键约束名 foreign key(column_name) references table_name2(column_name)   -- table_name2(外键所在的表);
  alter table table_name add constraint 外键约束名 foreign key(column_name) references table_name2;   -- table_name2(外键所在的表);
 
 
 
 
 
  闪回功能恢复被删除的表:
  1.确认表是否被删除:select * from student;
  2.确认删除后,去回收站查询看看:select object_name,original_name from recyclebin where original_name = 'STEDENT';
  3.使用FLASHBACK TABLE 语句恢复被删除的表:flashback table student to before drop;
 
 
 
 
 
  第十章  索引对象




























 
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
小红书笔记怎么删除小红书笔记怎么删除Mar 21, 2024 pm 08:12 PM

小红书笔记怎么删除?在小红书APP中是可以编辑笔记的,多数的用户不知道小红书笔记如何的删除,接下来就是小编为用户带来的小红书笔记删除方法图文教程,感兴趣的用户快来一起看看吧!小红书使用教程小红书笔记怎么删除1、首先打开小红书APP进入到主页面,选择右下角【我】进入到专区;2、之后在我的专区,点击下图所示的笔记页面,选择要删除的笔记;3、进入到笔记页面,右上角【三个点】;4、最后下方会展开功能栏,点击【删除】即可完成。

小红书删除的笔记能恢复吗小红书删除的笔记能恢复吗Oct 31, 2023 pm 05:36 PM

小红书删除的笔记不能恢复。小红书作为一款知识分享和购物平台,为用户提供了记录笔记和收藏有用信息的功能。根据小红书的官方说明,已经删除的笔记是无法恢复的。小红书平台并没有提供专门的笔记恢复功能。这意味着,一旦在小红书中删除了笔记,无论是不小心误删还是其他原因,一般情况下是无法从平台上找回被删除的内容的。如果遇到特殊情况,可以尝试联系小红书的客服团队,看是否能够协助解决问题。

小红书发布过的笔记不见了怎么办?它刚发的笔记搜不到的原因是什么?小红书发布过的笔记不见了怎么办?它刚发的笔记搜不到的原因是什么?Mar 21, 2024 pm 09:30 PM

作为一名小红书的用户,我们都曾遇到过发布过的笔记突然不见了的情况,这无疑让人感到困惑和担忧。在这种情况下,我们该怎么办呢?本文将围绕“小红书发布过的笔记不见了怎么办”这一主题,为你详细解答。一、小红书发布过的笔记不见了怎么办?首先,不要惊慌。如果你发现笔记不见了,保持冷静是关键,不要慌张。这可能是由于平台系统故障或操作失误引起的。检查发布记录很简单。只需打开小红书App,点击“我”→“发布”→“所有发布”,就可以查看自己的发布记录。在这里,你可以轻松找到之前发布的笔记。3.重新发布。如果找到了之

如何在最新的iOS 17系统中连接iPhone上的Apple Notes如何在最新的iOS 17系统中连接iPhone上的Apple NotesSep 22, 2023 pm 05:01 PM

使用添加链接功能在iPhone上链接AppleNotes。笔记:如果您已安装iOS17,则只能在iPhone上的AppleNotes之间创建链接。在iPhone上打开“备忘录”应用。现在,打开要在其中添加链接的注释。您还可以选择创建新备忘录。点击屏幕上的任意位置。这将向您显示一个菜单。点击右侧的箭头以查看“添加链接”选项。点击它。现在,您可以键入注释的名称或网页URL。然后,点击右上角的完成,添加的链接将出现在笔记中。如果要添加指向某个单词的链接,只需双击该单词即可将其选中,选择“添加链接”并按

小红书怎么在笔记中添加商品链接 小红书在笔记中添加商品链接教程小红书怎么在笔记中添加商品链接 小红书在笔记中添加商品链接教程Mar 12, 2024 am 10:40 AM

  小红书怎么在笔记中添加商品链接?在小红书这款app中用户不仅可以浏览各种内容还可以进行购物,所以这款app中关于购物推荐、好物分享的内容是非常多的,如果小伙伴在这款app也是一个达人的话,也可以分享一些购物经验,找到商家进行合作,在笔记中添加连接之类的,很多人都愿意使用这款app购物,因为不仅方便,而且有很多达人会进行一些推荐,可以一边浏览有趣内容,一边看看有没有适合自己的衣服商品。一起看看如何在笔记中添加商品链接吧!小红书笔记添加商品链接方法  在手机桌面上打开app。  在app首页点击

win7补丁包(UpdatePack7)【64位+32位】更新到21.04win7补丁包(UpdatePack7)【64位+32位】更新到21.04Jul 10, 2023 pm 04:33 PM

win7补丁包(UpdatePack7)是俄罗斯大神制作的一款Win7系统补丁自动安装精灵,它支持Win764位和32位,集成了Win7发布至今所有补丁,还包含了NVME协议补丁,USB3.0补丁等等。win7补丁包(UpdatePack7)【64位+32位】下载UpdatePack7参数介绍/NVMe(集成NVMe驱动)/S(静默安装,不更改IE版本,不重启)/Silent(自动安装,界面显示安装进度)/Temp(指定释放路径到临时文件夹)/IE11(更新安装InternetExplorer1

PHP和REDIS:如何实现分布式缓存失效与更新PHP和REDIS:如何实现分布式缓存失效与更新Jul 21, 2023 pm 05:33 PM

PHP和REDIS:如何实现分布式缓存失效与更新引言:在现代的分布式系统中,缓存是一个非常重要的组件,它可以显著提高系统的性能和可扩展性。与此同时,缓存的失效与更新也是一个非常重要的问题,因为如果无法正确地处理缓存数据的失效与更新,就会导致系统数据的不一致。本文将介绍如何使用PHP和REDIS实现分布式缓存失效与更新,同时提供相关的代码示例。一、什么是RED

win10系统频繁更新,如何解决提醒重启问题?win10系统频繁更新,如何解决提醒重启问题?Jun 30, 2023 pm 09:57 PM

win10电脑老是提醒更新重启怎么办?win10的更新问题一直是大家比较头疼的,无论是更新前还是更新后,系统老是提醒更新重启,十分烦人。其实我们只要将对应服务关闭就可以了,下面就一起来看看具体方法吧。win10电脑老是提醒更新重启解决办法一、更新前提示1、首先我们在开始菜单中打开设置。2、选择更新和安全。3、再点击高级选项。4、将更新通知关闭即可。二、更新后提醒1、其实我们在完成更新之后,系统也有可能会老是提醒我们重启。2、这时候我们需要先右键计算机,选择理3、在系统工具中找到图所示。4、然后我

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),