首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

Java 基础 之 while 循环

http://www.verejava.com/?id=16992618818220 /* while 循环 while(表达式){} 如果表达式为true 继续执行,否则退出循环 */ public class Test1 { /** * @param args the command line arguments */ public static void main(String[] args) { // 输出 1 - 5 之间(包括 1,5 本身)的数. int n=1; while(n<=5) // while 判断条件true 执行循环代码, 否则终止循环 { System.out.println(n); n++; } } } http://www.verejava.com/?id=16992618818220

优秀的个人博客,低调大师

Java 基础 之 分支语句

http://www.verejava.com/?id=16992614948219 import java.util.Scanner; public class Statement2 { public static void main(String[] args) { //分支语句 //定义一个按键码变量 Scanner in=new Scanner(System.in); System.out.println("请输入按键码..."); //int keyCode=in.nextInt(); //float keyCode=in.nextFloat(); //long keyCode=in.nextLong(); //boolean keyCode=true; //byte keyCode=(byte)in.nextInt(); //short keyCode=(short)in.nextInt(); //char keyCode=(char)in.nextInt(); switch(keyCode) { case 0: System.out.println("飞机向上移动"); break; case 1: System.out.println("飞机向下移动"); break; case 2: System.out.println("飞机向左移动"); break; case 3: System.out.println("飞机向右移动"); break; default: System.out.println("飞机不移动"); break; } /* 注意: 1. default: 是当没有任何匹配条件的时候默认自动执行 2. break:表示终止switch下面的判断语句执行, 如果没有break语句程序会继续往下执行 3. switch(表达式) 表达式只能是 byte,short,int,char类型常量 */ } } http://www.verejava.com/?id=16992614948219

优秀的个人博客,低调大师

Java 基础 之 条件语句

http://www.verejava.com/?id=16992610131518 /* 流程控制语句分为 1. 条件语句 2. 分支语句 3. 循环语句 */ import java.util.Scanner; public class Statement { public static void main(String[] args) { //1.条件语句 /* 包括: 1. if(表达式){语句} 2. if(表达式){语句}else{语句} 3. if(表达式){语句}else if{语句} */ Scanner in=new Scanner(System.in); System.out.println("请输入您的考试成绩..."); int score=in.nextInt(); if(score>=90) { System.out.println("奖励一朵红花"); } else if(score>=60&&score<90) { System.out.println("没有奖励,只有鼓励,革命尚为成功,同志继续努力"); } else if(score<60) { System.out.println("挨打"); } } } /* 如果在判断条件很多的时候if{}else{} 显得有点臃肿和难读, 这样的情况下我们一般选择 分支语句 switch(表达式){} */ http://www.verejava.com/?id=16992610131518

优秀的个人博客,低调大师

Java 基础 之 位运算

http://www.verejava.com/?id=16992602784016 public class Operation5 { public static void main(String[] args) { //位运算 /* 包括: 与 &, 或 |, 取反 ~, 异或 ^ 带符号左移<<, 带符号右移 >>, 无符号右移 >>> 1. & 就是二进制位如果都是1则为1,否则为0 2. | 就是二进制位如果都是0则为0,否则为1 3. ~ 就是二进制位如果是0取反变成1,否则如果是1取反变成0; 4. ^ 就是运算两边二进制位两边同时相等时为0,否则为1 5. <<就是将二进制位逐位向左移动n位,后面补n个0,相当于乘2; 6. >>就是将二进制位逐位向右移动n位,前面补n个符号位,向当于除2; 6. >>>就是将二进制位逐位向右移动n位,前面补n个0 */ byte a=1; //二进制 00000001 byte b=8; //二进制 00001000 byte c=127; //二进制 01111111 byte d=-127;//二进制 10000001 System.out.println(a&b); //结果 00000000 System.out.println(a|b); //结果 00001001 2^3+2^0=9 System.out.println(~a); //结果 11111110补码 转换为原码=10000001=-1-1=-2 System.out.println(a^b); //结果 00001001 =9; System.out.println(a<<1); //结果 00000010 2^1=2 System.out.println(c<<1); //结果 11111110 =254 System.out.println(a>>1); //结果 00000000 =0 System.out.println(c>>1); //结果 00111111 =63 System.out.println(d>>1); //结果 11000000补码 原码=10111111=-63-1=-64 System.out.println(d>>>1);//结果 01000000原码 /* 注意: 1.计算机存储时 二进制第一位是表示符号位 1 代表负数, 0代表正数 2.计算机存储时以补码的方式存储的, 正数的补码跟原码一样,负数的补码是去掉第一位符号位取反然计算结果后 再 + 1 得到的. 3. 那补码转换成原码就反过来 去掉第一位取反计算结果后 再-1. 4. System.out.println 没有 System.out.println(byte b)方法,计算机先自动将byte转化成 int 然后在移动 */ } } http://www.verejava.com/?id=16992602784016

优秀的个人博客,低调大师

Java 基础 之 入门HelloWorld

http://www.verejava.com/?id=1699251664916 import java.lang.*; /** @author : 胡杨 @version : 1.0 1. //双斜杠代表注释, 是给人看的, 机器忽略不计 2. public 公有的, 是java 的关键字 3. class 叫 类, 每一个java文件里必须包含一个类 4. HelloWord 叫 类名, 类名可以跟文件名不一样, 但是规范一般写成一样 5. static 叫 静态的, main方法必须写static java 虚拟机才能找到 6. void 空 也就是没有返回值 7. main 叫主方法, 是java程序的入口, 必须这么写固定的, 否则程序不能运行. 8. String 字符串 是用双引号括起来的数字字符的一连串的组合 9. String[] 字符串数组 10. args 叫 main 方法的参数 11. System: 系统, out : 输出 println : 打印 12. 类名 后面{}部分叫做 类体 括号必须成对出现 13. 主方法main 后面 {} 部分叫做方法体 括号必须成对出现 14. import java.lang.*; 叫做 导入 java.lang下面的所有类, 但是java 默认 java.lang 下面的类已经导入, 所有 java.lang这个包也是java唯一可以省略不用导入的包. 编码规范: 1. 类名 第一个单词首字母大写, 如果有多个单词组成, 每个单词的首字母大写 2. java 是区分大小写的语言 3. 书写类体时{} 括号要成对出现 4. 书写方法体时{}括号要成对出现 5. 方法写在类体中 每个方法前面留一个 Tab 键空格 6. 方法中的执行语句 写作方法体中 每条执行语句 相对于方法前面留一个Tab 键空格, 并且每条执行语句后面都要写一个分号; 表示该条语句执行结束 */ public class HelloWorld { public static void main(String[] args) { //向控制台打印输出 Hello Word信息 然后换一行 System.out.println("Hello Word"); //向控制台打印输入信息, 但不换行 System.out.print("aaaa\t"); System.out.print("bbb"); } } http://www.verejava.com/?id=1699251664916

优秀的个人博客,低调大师

高并发编程必备基础

一、前言 借用Java并发编程实践中的话"编写正确的程序并不容易,而编写正常的并发程序就更难了",相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的,本文算是对多线程情况下同步策略的一个一个简单介绍。 二、 什么是线程安全问题 线程安全问题是指当多个线程同时读写一个状态变量,并且没有任何同步措施时候,导致脏数据或者其他不可预见的结果的问题。Java中首要的同步策略是使用Synchronized关键字,它提供了可重入的独占锁。 三、 什么是共享变量可见性问题 要谈可见性首先需要介绍下多线程处理共享变量时候的Java中内存模型。 Java内存模型规定了所有的变量都存放在主内存中,当线程使用变量时候都是把主内存里面的变量拷贝到了自己的工作空间或者叫做工作内存。 如图是双核C

优秀的个人博客,低调大师

JavaScript基础(六)面向对象

面向对象 对象创建方式: 1、调用系统函数创建对象 (创建对象的最简单方式就是创建一个 Object 的实例,然后再为它添加属性和方法。) var obj = new Object(); obj.name = "Daotin"; obj.age = 18; obj.eat = function () { console.log("我很能吃"); ); 缺点:使用同一个接口创建很多对象,会产生大量的重复代码。 2、自定义构造函数创建对象 工厂模式创建对象:考虑到在 ECMAScript 中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节(把创建一个函数的过程封装在一个函数里面),缺点:创建的对象属性都是一样的。 function creatObject() { var obj = new Object(); obj.name = "Daotin"; obj.age = 18; obj.eat = function () { console.log("我很能吃"); }; return obj; } var person = creatObject(); person.eat(); 工厂模式创建对象进阶版:可以修改属性 function creatObject(name, age) { var obj = new Object(); obj.name = name; obj.age = age; obj.eat = function () { console.log("我很能吃"); }; return obj; }java var person = creatObject("Daotin", 18); person.eat(); 自定义构造函数:(函数和构造函数的区别:没有区别,但是通常构造函数首字母大写) 特点: 没有显式地创建对象; 直接将属性和方法赋给了 this 对象; 没有 return 语句。 function CreatObject() { // 首字母大写 this.name = "Daotin"; this.age = 18; this.eat = function () { console.log("我很能吃"); }; } var person = new CreatObject(); person.eat(); 进阶(传参数): function CreatObject(name, age) { this.name = name; this.age = age; this.eat = function () { console.log("我很能吃"); }; } var person = new CreatObject(); person.eat(); 构造函数的问题 构造函数模式虽然好用,但也并非没有缺点。使用构造函数的主要问题,就是每个方法都要在每个实例上重新创建一遍。在前面的例子中, person1 和 person2 都有一个名为 sayName()的方法,但那两个方法不是同一个 Function 的实例。不要忘了——ECMAScript 中的函数是对象,因此每定义一个函数,也就是实例化了一个对象。从逻辑角度讲,此时的构造函数也可以这样义。 function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.sayName = new Function("alert(this.name)"); // 与声明函数在逻辑上是等价的 } 从这个角度上来看构造函数,更容易明白每个 Person 实例都包含一个不同的 Function 实例(以显示 name 属性)的本质。说明白些,以这种方式创建函数,会导致不同的作用域链和标识符解析,但创建 Function 新实例的机制仍然是相同的。因此,不同实例上的同名函数是不相等的,以下代码可以证明这一点:alert(person1.sayName == person2.sayName); //false 然而,创建两个完成同样任务的 Function 实例的确没有必要;况且有 this 对象在,根本不用在执行代码前就把函数绑定到特定对象上面。因此,大可像下面这样,通过把函数定义转移到构造函数外部来解决这个问题。 function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.sayName = sayName; } function sayName(){ alert(this.name); } var person1 = new Person("Nicholas", 29, "Software Engineer"); var person2 = new Person("Greg", 27, "Doctor"); 在这个例子中,我们把 sayName() 函数的定义转移到了构造函数外部。而在构造函数内部,我们将 sayName 属性设置成等于全局的 sayName 函数。这样一来,由于 sayName 包含的是一个指向函数的指针,因此 person1 和 person2 对象就共享了在全局作用域中定义的同一个 sayName() 函数。 3、使用对象字面量表示法 对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。 如果留空其花括号,则可以定义只包含默认属性和方法的对象 var person = {}; //与 new Object()相同 。 缺点:一次性对象,无法修改属性的值。 var obj = { name:"Daotin", // 注意是属性赋值是冒号 age: 18, eat: function () { console.log("我很能吃"); } // 最后一个后面没有逗号 }; obj.eat(); 访问对象属性 点表示法 和 方括号表示法 alert(person["name"]); //"Nicholas" alert(person.name); //"Nicholas" 从功能上看,这两种访问对象属性的方法没有任何区别。但方括号语法的主要优点是可以通过变量来访问属性(属性绑定),例如: var propertyName = "name"; alert(person[propertyName]); //"Nicholas" 如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,也可以使用方括号表示法。 例如:person["first name"] = "Nicholas"; 由于"first name"中包含一个空格,所以不能使用点表示法来访问它。然而,属性名中是可以包含非字母非数字的,这时候就可以使用方括号表示法来访问它们。通常,除非必须使用变量来访问属性,否则我们建议使用点表示法。 PS: 如果访问一个没有的属性的值,那么这个值为 undefined,而不是报错? 因为js是一门动态类型的元,不管使用点表示法还是方括号表示法,如果没有这个属性,就相当于在创建这个属性,然而这个时候没有赋值,所以就是 undefined。 访问对象方法 对象名.函数名(); JSON 什么是JSON? JavaScript Object Notation(JavaScript对象表示形式:就是对象字面量) JSON格式的数据:一般都是成对的,键值对。 JSON和对象字面量的区别? json和对象(对象字面量)的区别仅仅在于,json格式的数据中的键必须用双引号括起来; var json = { "name" : "zs", "age" : 18, "sex" : true, "sayHi" : function() { console.log(this.name); } }; 字面量的遍历 对象本身没有 length ,所以不能用 for 循环遍历。要使用 for...in... var json = {“aaa”: 1, “bbb”: 2, “ccc”: 3, “ddd”: 4} for(var key in json){ //key代表aaa,bbb.....等 //json[key]代表1,2,3....等(k 不要加引号) } 值传递和引用类型传递 分析值传递和址传递最好的方法就是画图分析,最简单。 内置对象 Math, Date, String, Array MDN:在线文档 菜鸟教程 基本包装类型 本身是基本类型,但是在执行的过程中,如果这种类型的变量调用了属性或者方法,那么这种类型就不是基本类型了,而是基本包装类型。这个变量也不是普通变量了,而是基本包装类型的变量。 var str = "hello"; str = str.replace("he", "wo"); console.log(str); // wollo 需要注意的地方: 如果一个对象&&true,那么结果是true 如果一个true&&对象,那么结果是对象。 var flag = new Boolean(false); var result = flag && true; var result1 = true && flag; console.log(result); // true console.log(result1); // Boolean var num = 10; // 基本类型 var num2 = Number("10"); // 不是基本包装类型,而是转换,这里换成 Boolean 也成立 var num3 = new Number("10"); // 这才是基本包装类型

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册