吴嘉俊(Stef)高级讲师
拥有多年的Java开发经验,CTO,EasyJF开源团队创始人之一、负责 EasyJWeb项目的开发和维护。曾在国内多家大型软件公司负责公司内部框架的开发和维护,为多个大中型公司做过架构和技术咨询。曾组织开发了蓝源 装饰行业ERP、美国EMR、蓝源服装行业连锁管理系统、蓝源SaaS服务平台、蓝源Eloan互联网金融综合解决方案等系统产品。具有非常丰富项目开发和 管理经验。
擅长技术:主流JavaEE,Android技术,对 Spring、JPA、Hibernate、 MyBatis、Struts2、MongoDB、Redis等技术领域有深入研究。
吴老师有丰富的Java培训经验和IT培训行业顾问经验;授课激情,有感染力 ,注重对底层原理的剖析和理解;善于培养学生对编程的兴趣;
java入门要注意什么
学习java就像是一个种花的过程,不断地为其施肥浇水,它才会茁壮成长。 而我们学习java,就要不断的充实自己、提升自己,才能获得更多机会。很多开始学习java编程的小白,经常就会被概念、定义什么的搞糊涂。当分类 、对象、接口、构造函数等等各种专业名词出现的时候,你一定是脑子里好像一片空白,根本就搞不懂这些字眼的意思和关系,而且,这种情况下,很 容易导致你丧失自信心,开始逃避、拒绝,这些小白经常遇到的情况在我刚接触java的时候也遇见了,但是好在我足够幸运,遇见了诚筑说。我现在已 经是公司的项目经理了,今天,我为大家来总结了一些经验和建议,希望能够帮助到大家。
一点:熟练基本的j2seAPI
除去java语言本身的语法之外呢,要懂得并且熟练j2seAPI的API也是非常有 必要的,在这里,就建议大家首先去掌握字符串的处理、异常的处理、容器、输入输出、线程等,这些相对来说较为重要的。还有就是API的内容是非 常庞大的,关于API,一定要懂得查询API的文件说明,在了解了其作用用途或者目的才能够进行相对于的程序。
二点:稳固java的语法基础
学习java一定要学会使用java的程序语言,用来编写程序,但是学习程序语 言就要熟悉语法是怎么使用的。程序语言其实也是一种语言,不过跟人类的语言不同,这种语言是要和计算机沟通交流,那怎么做才能熟悉这种语言呢 ,我给出的建议是多看别人写的程序,了解人家是怎么用java来解决问题的。然后再找类似的程序去练习了,这样就能够从实际操作中检验自己是否真 的知道该怎么去解决问题了。
三点:加入贴吧论坛多参与讨论
根据我当时的经验,在大家学习的过程中,如果有人可以参与话题,共同讨 论的话,会加快你学习的速度。所以大家可以和我一样,找一个技术讨论的地方,贴吧啊,论坛啊都可以,在这里进行讨论,毕竟大家有着共同的目标 和理想,有着共同的话题可聊,这样的话,又大大节省了学习的时间。
学完基本的java语法呢,现在就该用java来进行实际的编程了,假如你需要 编写窗口程序,那就学Swing窗口设计;假如你要编写数据库什么的,那就学JDBC等等。
流行框架
流行框架
-
01Struts2
-
1.Struts2流程
-
2.值栈与ONGL
-
3.Struts2标签库
-
4.Struts2模型驱动原理
-
5.Struts2声明式异常处理
-
6.Struts2类型转换&自定义类型转换
-
7.Struts2拦截器原理&自定义拦截器
-
8.Struts2源码分析&运行原理
-
02Hibernate
-
1.Hibernate环境搭建&配置
-
2.hibernate.cfg.xml&主键生成策略
-
3.Session核心方法
-
4.ORM映射:单向/双向1-n映射
-
5.ORM映射:基于主/外键映射&n-n
-
6.检索策略&迫切左外连接
-
7.Hibernate缓存机制
-
8.QBC、HQL
-
9.Session管理
-
03Spring
-
1.SpringIOC&DI机制
-
2.Spring配置式组件管理
-
3.Spring注解式自动装配
-
4.Spring表达式语言
-
5.SpringAOP&动态代理
-
6.SpringJDBC使用
-
7.Spring声明式事务
-
8.Spring单元测试
-
9.Spring源码分析
-
10.Spring、Struts2、Hibernate整合
-
04SpringMVC
-
1.SpringMVC配置&运行流程
-
2.SpringMVC数据绑定
-
3.模型处理&@ModelAttribute
-
4.RestFulCRUD
-
5.表单标签&静态资源处理
-
6.数据转换&格式化&JSR303数据校验
-
7.HttpMessageConverter
-
8.Ajax&国际化&文件上传**
-
9.异常处理
-
10.整合&父子容器
-
05MyBatis
-
1.MyBatis配置&查询数据
-
2.MyBatis全局配置文件
-
3.MyBatis映射文件
-
4.关联查询,动态sql
-
5.MyBatis缓存机制&整合ehcache
-
6.MyBatis逆向工程
-
7.MyBatis、Spring、SpringMVC整合
-
8.MyBatis运行原理&源码分析
-
9.MyBatis拦截器&插件开发
-
10.分页插件&存储过程调用&自定义 TypeHandler
-
06JPA
-
1.JPA技术体系
-
2.JPA注解
-
3.JPA相关API
-
4.JPA映射
-
5.JPQL
-
6.二级缓存
-
7.Spring整合JPA
-
07SpringData
-
1.SpringData快速入门
-
2.SpringData_Repository接口
-
3.Repository查询规范
-
4.@Query&@Modifying
-
5.CrudRepository
-
6.PagingAndSortingRepository
-
7.JpaRepository
-
8.JpaSpecificationExecutor
-
9.自定义Repository
-
08Maven
-
1.Maven环境搭建
-
2.Maven构建&自动化构建
-
3.本地仓库&中央仓库
-
4.maven创建web工程
-
5.pom.xml、依赖管理
-
6.坐标、依赖、生命周期等
-
7.eclipse下的maven使用
-
8.继承&聚合
-
9.maven构建SSH/SSM应用
-
10.自动部署&持续集成&持续部署
-
09SVN
-
1.SVN简介
-
2.SVN服务器搭建
-
3.SVN创建版本库
-
4.Eclipse整合svn插件
-
5.使用SVN更新提交
-
6.SVN仓库分析
-
7.SVN协同修改&冲突解决
-
8.SVN权限管理
-
9.SVN时光机
-
10.TortoiseSVN
-
10Shiro
-
1.Shiro入门
-
2.Spring集成Shiro
-
3.Shiro工作流程
-
4.权限URL配置
-
5.认证流程&认证Realm
-
6.密码比对,MD5&盐值加密
-
7.授权流程
-
8.标签&权限注解
-
9.会话管理、SessionDao
-
10.缓存
-
11.实现”记住我”
-
11Activiti5
-
1.工作流&工作流引擎
-
2.BPMN2.0规范
-
3.Activiti5框架表结构
-
4.Activiti5核心组件&服务接口
-
5.Activiti5插件安装&整合Spring
-
6.流程定义
-
7.流程实例&任务&历史
-
8.任务领取&流程变量
-
9.排他网关&并行网关
-
12WebService
-
1.WebService简介
-
2.WebService主流框架
-
3.cxf的使用
-
4.SOAP协议
-
5.WSDL讲解
-
6.JAX-WS
-
7.与Spring整合
-
8.JAXB
-
9.JAX-RS
-
10.支付接口原理
-
13Linux
-
1.Linux系统-基础
-
2.Linux网络基础
-
3.Linux在VMware下的安装
-
4.Linux下Java环境的搭建
-
5.Linux下Tomcat安装和配置
-
6.Linux下 Oracle/MySQL 安装与配置
-
7.Shell 编程
-
14Redis
-
1.NoSQL&Redis入门
-
2.Redis/memcache/MongDB对比
-
3.Redis安装&启动
-
4.分布式数据库CAP原理
-
5.Redis五大数据类型和基本操作命令
-
6.Redis总体配置Redis.conf
-
7.Redis持久化(RDB和AOF)
-
8.Redis事务控制
-
9.Redis发布和订阅
-
10.Redis(Master/Slave)主从复制
-
11.Jedis
-
15Git&Git Hub
-
1.Git安装配置
-
2.Git本地库搭建
-
3.Git常用操作命令
-
4.Github注册与配置
-
5.Github与Git协同办公
-
6.TortoiseGit安装配置
-
7.Egit操作push/pull,
-
8.Git工作流
-
9.集中式&GitFlow&Forking
-
16MySQL高级
-
1.MySQL架构组成
-
2.MySQL备份和恢复
-
3.MySQL查询和慢查询日志分析
-
4.MySQL索引优化
-
5.MySQL存储引擎优化
-
6.MySQL锁机制优化
-
7.MySQL高可用设计
-
8.MySQL集群
-
17JVM原理
-
1.JVM简析
-
2.JVM组成结构
-
3.JVM堆、栈原理
-
4.JVM-Heap三区原理
-
5.JVM垃圾收集机制
-
6.堆内存调优
-
7.GC回收策略
-
8.GC三大算法
-
18Quartz
-
1.Quartz作业调度简介
-
2.Quartz作业调度执行以及持久性
-
3.Quartz基本使用
-
4.Quartz核心类讲解
-
5.Quartz Trigger 触发器
-
6.Quartz Job&JobDetail
-
7.Quartz Calendars日历讲解
-
8.JobListener监听器和TriggerListener监听器
-
9.Spring整合Quartz
-
19Nginx
-
1.Nginx反向代理介绍
-
2.Nginx **和安装
-
3.Nginx 编译和启动、访问
-
4.在Linux下搭建Nginx集群
-
5.在Windows搭建Nginx集群
-
6.解决Session共享问题
-
20Java JUC 线程高级
-
1.volatile 关键字
-
2.内存可见性分析
-
3.原子变量与CAS (Compare And Swap) 算法分 析
-
4.ConcurrentHashMap 锁分段机制
-
5.CountDownLatch 闭锁
-
6.实现 Callable 接口
-
7.Lock 同步锁
-
8.Condition 控制线程通信
-
9.线程按序交替
蓝桥杯之全排列函数next_permutation()运用
>
在蓝桥杯的题目中大多数都可以运用到全排列函数 充分运用可以节省很多的时间。话不多说来刷题
三羊献瑞 观察下面的加法算式: 祥 瑞 生 辉
三 羊 献 瑞
三 羊 生 瑞 气 (如果有对齐问题,可以参看【图1.jpg】)其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
看到这题一看就知道用暴力搜索法,代码如下
#include<iostream> using namespace std; int check(int num[],int n) { for(int i = 0; i < n; i ) { if(num[i]==num[n]) { return 0; } } return 1; } int main() { int num[8]; int count = 0; for(num[0] = 1; num[0] <=9; num[0] ) { if(check(num,0)) for(num[1] = 0; num[1] <=9; num[1] ) { if(check(num,1)) for(num[2] = 0; num[2] <=9; num[2] ) { if(check(num,2)) for(num[3] = 0; num[3] <=9; num[3] ) { if(check(num,3)) for(num[4] = 1; num[4] <=9; num[4] ) { if(check(num,4)) for(num[5] = 0; num[5] <=9; num[5] ) { if(check(num,5)) for(num[6] = 0; num[6] <=9; num[6] ) { if(check(num,6)) for(num[7] = 0; num[7] <=9; num[7] ) { if(check(num,7)) { int a = num[0]*1000 num[1]*100 num[2]*10 num[3]; int b = num[4]*1000 num[5]*100 num[6]*10 num[1]; int c = num[4]*10000 num[5]*1000 num[2]*100 num[1]*10 num[7]; if(a b==c) { cout << b; } } } } } } } } } } return 0; }看了一下六十多行,啊,学这么多好累啊! 对于这种超过5个循环以上的暴力可以考虑用全排列函数 第二种方法如下:
#include<iostream> #include<algorithm> using namespace std; int main1() { int num[10] = {1,0,2,3,4,5,6,7,8,9}; int count = 0; do { if(num[0]!=0&&num[4]!=0) { int a = num[0]*1000 num[1]*100 num[2]*10 num[3]; int b = num[4]*1000 num[5]*100 num[6]*10 num[1]; int c = num[4]*10000 num[5]*1000 num[2]*100 num[1]*10 num[7]; if(a b==c) { cout << b; break; } } }while(next_permutation(num,num 10)); return 0; }这就简便多了,这里注意到题目 答案唯一 所以当瞒住条件后就可以跳出循环,算法的时间就可以大大减少 自己总结了一下运用全排列的环境
五重循环以上 数字不能重复 要有顺序
相关推荐: