- 博客(57)
- 资源 (4)
- 问答 (2)
- 收藏
- 关注
原创 模板引擎Thymeleaf
JSP、Velocity、Freemarker、ThymeleafSpringBoot推荐的Thymeleaf;语法更简单,功能更强大;### 1、引入thymeleaf;```xml<dependency><groupId>org.springframework.boot</groupId>...
2019-03-14 22:33:15
229
原创 SpringBoot Web开发
使用SpringBoot;**1)、创建SpringBoot应用,选中我们需要的模块;****2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来****3)、自己编写业务代码;****自动配置原理?**这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxxxxxxAutoConfiguration:帮...
2019-03-13 22:19:05
209
原创 SpringBoot日志的使用和配置
SpringBoot默认帮我们配置好了日志//记录器 Logger logger = LoggerFactory.getLogger(getClass()); @Test public void contextLoads() { //System.out.println(); //日志的级别; //由低到高 trace<debug<info<warn...
2019-03-13 22:15:53
763
原创 Spring Boot
日志框架的发展:开发一个大型系统;1、System.out.println("");将关键数据打印在控制台;去掉?写在一个文件?2、框架来记录系统的一些运行时信息;日志框架 ;zhanglogging.jar;3、高大上的几个功能?异步模式?自动归档?xxxx?zhanglogging-good.jar?4...
2019-03-12 22:19:09
172
原创 spring boot 配置文件加载位置
1.项目中的配置文件springboot 启动时 会默认扫描以下位置的application.properties 或者 application.yml 文件,作为spring boot的默认配置文件file:./config/ 项目根路径的config文件夹中file:./ 项目根路径中c...
2019-03-11 22:19:45
2285
原创 Spring Boot入门程序
在此之前,一定要确保环境没有问题。安装了maven和jdk。我本地用的是maven是3.53,jdk是1.8。1.使用IDEA 或者 ECLIPSE创建好一个 maven项目。2.在 pom.xml文件中,导入 spring boot 相关依赖<parent> <groupId>org.springframework.boot</gr...
2019-03-07 22:27:30
148
转载 Web Storage的使用和进阶知识
Web Storage的使用和进阶知识前端博客•前端开发教程•cookie | 缓存 | 网站优化•787View1文章目录Web Storage使用兼容性桌面浏览器移动浏览器分类文档源localStorage时效作用域sessionStorage时效
2018-01-02 09:39:09
403
原创 C# 锯齿数组
锯齿数组就是数组的数组,但和多维数组不一样。比如二维数组,是多个相同元素的一维数组,但是锯齿数组,下面每个数组的元素的个数不一样,维度也可以不一样。 //锯齿数组的两种初始化方式 int[][] a = new int[4][]; a[0] = new int[1] { 1 }; a[1] = new int[
2017-07-09 15:00:32
1343
原创 C# 枚举类型的转换
直接贴代码字符串转为枚举类型,如果字符串的值不在枚举类型包含的数据之中,就会产生异常。class Program { static void Main(string[] args) { SSS st1; string str; str = "BBB";
2017-07-08 20:30:38
992
原创 LINUX vfork
vfork 和fork 一样,执行一次,返回2次。使用fork创建子进程,子进程完全复制父进程资源,这样得到的子进程独立于父进程,具有良好的并发性。使用vfork创建子进程,操作系统并不将父进程的地址空间完全复制到子进程中。用vfork创建的子进程共享父进程的地址空间。子进程完全运行在父进程的地址空间上。子进程对该地址空间任何数据的修改在父进程中也可见。
2017-07-04 21:06:00
265
原创 LINUX exec函数的使用
(1)exec函数说明fork函数是用于创建一个子进程,该子进程几乎是父进程的副本,而有时我们希望子进程去执行另外的程序,exec函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新程序的内容替换了。另外,这里的可执行文件既可以是二进制文件,也可
2017-07-02 20:55:39
1269
转载 LINUX waitpid()函数的用法
#include #include pid_t waitpid(pid_t pid,int *status,int options);如果在调用waitpid()函数时,当指定等待的子进程已经停止运行或结束了,则waitpid()会立即返回;但是如果子进程还没有停止运行或结束,则调用waitpid()函数的父进程则会被阻塞,暂停运行。参数1 pid等待进程
2017-06-28 22:03:44
1118
原创 LINUX wait
系统中的僵尸进程都要由wait系统调用来回收。函数原型:#include#includepid_t wait(int *status);进程一旦调用了wait就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻
2017-06-28 21:51:01
395
原创 LINUX fork的使用
fork函数#include#includeint main(){ int count=0; pid_t pid; pid= fork(); //进程在执行fork时一分为2,且有两个返回值。两个进程依次执行if else if(pid>0) { printf("我是爸爸,fork返回值=%d,进程号=%d,父进程号=%d\n",pid,getpid(),getppid(
2017-06-26 21:31:24
332
原创 LINUX 文件系统的总体结构
用户空间:用户空间包含一些应用程序和GUN C库,他们为文件系统调用(打开,读取,写和关闭)提供用户接口。系统调用:系统调用的作用相当于交换器,将系统调用从用户空间发送到内核空间的适当端点。VFS:是底层文件系统的主要接口,这个组件导出一组接口,然后将他们抽象到各个文件系统,各个文件系统的行为可能差异很大。有两个针对文件系统的缓存(inode和dentry),他们缓存最近使
2017-05-28 09:51:04
375
原创 make工程管理器
make工程管理器是一个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入makefile文件的内容来执行大量的编译工作。用户只需编写一次简单的编译语句就可以了。它大大的提高了实际的工作效率
2017-05-22 21:43:53
1398
原创 二叉树
二叉树的性质:1、二叉树的第i层上至多有2的(i-1)次方个节点;2、深度为k的二叉树的最大节点数目为2的k次方-1个节点。3、对于任何一颗二叉树T,如果终端节点数为m,度为2的节点数n,则m=n+1。满二叉树:深度为K且节点为2的K次方 -1;每一层的节点都是该层的最大数目完全二叉树:对满二叉树由上至下,由左至右的顺序进行编号。在二叉树中每个节点的号码都和满二叉树的编
2017-05-22 18:05:07
240
原创 GUN开放源代码方面的要求
在任何情况下都不要饮用有版权的代码善意接收别人给您的程序添加的代码,但要检查其合法性,即是否也是GUN的编写日志文件(Changelog),这将是您的代码更容易维护。GUN对C程序风格的要求:函数的开头的左花括号放到最左边,避免把任何其它的左花括号、左括号或者左方括号放到最左边。对于函数定义来说,把函数名的起始字符放到最左边也同样重要。这帮助任何寻找函数定义,并且可能有
2017-05-21 17:04:57
1359
原创 LINUX GDB调试器
gdb进行调试的是可执行文件,而不是如“.c”这样的源代码文件。因此,需要先通过gcc编译生成可执行文件才能用gdb进行调试。用-g生成可调试的文件gcc -o main.o main.c -ggdb命令:list(l) | 查看这一行附近10行的代码,或者查看函数代码。后面不加参数,是从头开始显示,每一次显示10行break (b) || 在某一行设置断点,在某个函数
2017-05-21 16:27:45
246
原创 GCC
程序预处理:gcc -o t.i t.c -E程序编译,生成汇编代码gcc -o t.s t.i -S将汇编代码生成可执行文件gcc -o t.o t.s
2017-05-21 11:16:51
342
原创 C# LINQ使用,运算符
直接上例子: static void Main(string[] args) { //定义匿名类的数组对象 var peo = new[] { new {Name = "ppp1",LastName= "a",ID="2011"}, new {Name = "
2017-05-20 15:09:25
787
原创 C# LINQ使用
例子如下: static void Main(string[] args) { //定义匿名类的数组对象 var peo = new[] { new {Name = "ppp1",LastName= "a",ID=2001}, new {Name = "ppp
2017-05-18 21:14:52
295
原创 C# 迭代器
例子如下:一般是在用foreach循环访问自定义结构类时用到这个。遍历是通过IEnumerable.GetEnumerator()来实现的。 class A:IEnumerable { C c1; private List data = new List(); public void FillList(params T[] i
2017-05-17 21:36:10
376
原创 C# 枚举集合
枚举集合指的是,对一个集合中的元素,一次列举出来。对于数组来说,用for循环和foreach可以实现。foreach能实现,是因为继承了IEnumerator对于一些自定义的结构,需要手动去写。这是继承自IEnumerator, class TreeEnumerator:IEnumerator where TItem:IComparable { privat
2017-05-14 16:48:05
593
原创 C# 协变和逆变
协变是,接口泛型参数仅用于输出的地方、并且是父接口为object,子类对象为string等类型。interface IjiekouB//T仅用作返回值,是输出结果 { T GetData(); } static void Main(string[] args) { A a1 = new A();
2017-05-14 13:59:35
534
原创 C# 泛型
例子如下:static void Main(string[] args) { int a = 5; double b = 6; Queue s = new Queue();//表示是一个int类型的队列,只能存放int类型,不带泛型的存放的是object类型 s.Enqueue(a)
2017-05-12 19:46:59
226
翻译 C# 子线程调用父线程控件
1、在程序初始化的时候对要操作的控件设置下面的属性:System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;这样,系统就不会再抛出上面所说的这个错误了。从实质上说,该方法是通过采用取消线程安全保护模式的方式实现的,所以不建议采用。2、基本思路如下:把想对另一线程中的控件实施的操作放到一个函数中
2017-05-12 16:09:03
964
原创 C# 事件
事件和委托类似,但是事件只能在定义的类的内部使用,而委托可以在外部使用例子如下:public delegate void SSS_A_B(); public event SSS_A_B shijian1; public void Z_shijian1() { shijian1(); }
2017-05-11 21:28:45
203
原创 C# Lambda
例子:class Program { //定义委托类型 delegate int Weituo(int a); static void Main(string[] args) { //定义委托变量 Weituo wei1; wei1 =
2017-05-09 20:30:51
467
原创 委托适配
class A { public void Fun_A(int a) { Console.WriteLine("Fun_A"); } public void Fun_A1() { Fun_A(0); } }
2017-05-08 20:59:18
173
原创 C# 委托
直接上实例。代码含有注释。//类型A,内有一个函数 class A { public void Close_A() { Console.WriteLine("Close_A"); } }//类型B,里面有一个函数。 class B { public
2017-05-04 15:21:42
157
原创 C# 索引器
以下是索引器例子程序,功能是通过索引器查看某个数字,某一位(二进制下)是否为0,0则False,1则true。还可以通过true和false 设置某一位的值为1还是0; struct IntBits { public IntBits(int initialBitValue) { bits = initialBitVal
2017-05-02 16:34:46
247
原创 C# 属性
属性是通过getset来实现的属性可以只有读或者只有写,也可以加访问修饰符。 class A { private int x, y; public A(int a,int b) { x= rangeCheckedX(a);//调用判断函数,判断值是否在设定的范围之中,不在就抛异常
2017-05-01 16:44:22
190
原创 C# 资源释放
读文件时打开时需要关闭。为了防止文件读取过程中出现异常,造成无法后续执行关闭,所以需要用try finally。 static void Main(string[] args) { TextReader reader = new StreamReader("D:/学习/C# VS2010/第14章垃圾回收与资源管理/test.txt", Enco
2017-04-30 16:16:52
526
原创 C# 垃圾回收
析构:在对对象进行资源回收时自动执行。 class C { ~C() { Console.WriteLine("C--xigou"); } }注意事项:析构方法只能存在于引用类型,结构体无析构方法,不可对析构方法使用访问修饰符,析构方法不允许带任何参数。子类继承父类时,先执行
2017-04-30 15:03:43
523
原创 C# 密封类和密封方法
密封类是在类定义前加sealed。密封类不能被继承。 sealed class A { ... }密封方法,能禁止子类对其进行重写的方法。比如定义一个类A,A派生出B,B派生出C。B如果需要对A的虚方法重写,但不想让C对B重写过的方法重写,可以对B的方法添加一个sealed,这样C就无法重写B的方法。例子: class A
2017-04-28 19:17:05
302
原创 C# 抽象类
抽象类的意思,就是这个类是抽象的,里面带有纯虚函数。不能创建实例。纯虚函数,是在函数前加abstract ,只声明,不实现。实现在相应的子类中。类似虚函数的重写。但是虚函数必须有定义,且可以不重写。而抽象类,子类必须实现父类中用abstract声明的函数例子: abstract class A { abstract public void Fun(
2017-04-27 19:38:22
244
原创 C# 接口
接口也是C#实现多态的一种方式。接口用interface声明,接口的名字首字母为大写的I接口声明:interface Ijiekou { int Fun(); }//接口使用 class A:Ijiekou { public int Fun() { return 4;
2017-04-26 13:53:41
157
原创 C# 类的扩展
类的扩展必须使用静态类,和静态函数 。被扩展的类型为this后面类型,quyu函数为int,这样就相当于给int类型增加了一个成员函数。sishewuru函数为double,此时相当于为double类型增加了一个成员函数 static class SSS { public static int quyu(this int i,int x)
2017-04-25 18:17:32
1222
原创 C# 类的继承
定义一个类A, 然后定义一个类B继承自类A,此时A为父类(基类),B为子类(派生类)。称B继承自A,A派生出B。此时B继承 A的非私有部分。对于A的私有部分,是不能被继承的。A的构造函数: public A(string n) { name = n; }B的构造函数: public B(string nam
2017-04-25 16:04:40
495
redis主从复制能不能指定库号, 把 主库0号库的内容复制到从库的1号库
2019-08-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人