目录牛客_MT1最大差值_模拟+贪心题目解析C++代码Java代码牛客_MT1最大差值_模拟+贪心最大差值_牛客题霸_牛客网描述:有一个长为n的数组A,求满足0≤a≤b&A,intn){//vectorarr(n,0x3f3f3f3f);//维护一个0到i的最小值//arr[0]=A[0];//intres=0;//for(inti=1;i
求解一次最佳平方逼近多项式
F_D_Z
数理数值分析一次最佳平方逼近多项式
例设f(x)=1+x2f(x)=\sqrt{1+x^2}f(x)=1+x2,求[0,1][0,1][0,1]上的一个一次最佳平方逼近多项式。解:d0=∫011+x2dx=12ln(1+2)+22≈1.147d_0=\int_{0}^{1}\sqrt{1+x^2}dx=\frac{1}{2}\ln(1+\sqrt{2})+\frac{\sqrt{2}}{2}\approx1.147d0=∫011+
基于STM32+微信小程序设计的环境监测系统(腾讯云IOT)
DS小龙哥
智能家居与物联网项目实战stm32微信小程序腾讯云
一、设计需求基于STM32设计的环境检测系统(腾讯云物联网+微信小程序实现)【1】项目背景随着人们生活水平的提高,人们对生活环境的求越来越高尤其是在家居环境有害气体污染已经引起了人们的注意,温度和湿度控制等。有关研究人员发现,天然气主要组成部分为甲烷气,而且还有少量的乙烷、丙烷、丁烷等烷烃,还含有二氧化碳、氧、氮、硫化氢、水分等。甲醛是一种破坏生物细胞蛋白质的原生质毒物,会对人的皮肤、呼吸道及内脏
Python-有效字母异位词
m0_37763377
python哈希算法算法数据结构
一、什么是字母异位词字母异位词是指由相同字母组成但排列顺序不同的单词。例如,"eat"、"tea"和"ate"都是字母异位词,因为它们由相同的字母组成,只是排列顺序不同。二、思路(一)暴力解法这里可以用两层循环来判断2个字符串的元素是否一样,显然时间复杂度为O(n²),在这里大家可以自己写一下,文章就不再提供演示。(二)哈希表解法1.什么是哈希表?哈希表(HashTable),也称为散列表,是
【Leetcode】430. 扁平化多级双向链表
海绵波波107
#算法和leetcodeleetcode链表算法
目录一、题目二、思路2.1解题思路2.2代码尝试2.3疑难问题2.4AI复盘三、解法四、收获4.1心得4.2举一反三一、题目二、思路2.1解题思路2.2代码尝试/*//DefinitionforaNode.classNode{public:intval;Node*prev;Node*next;Node*child;};*/classSolution{public:Node*flatten(Node
DeepSeek + 药物研发:解决药物研发周期长、成本高-降低80%、失败率高-减少40%
Debroon
医疗大模型研发+慢病逆转人工智能深度学习
DeepSeek+药物研发:解决药物研发周期长、成本高-降低80%、失败率高-减少40%论文大纲1.WHY——研究背景与现实问题1.1研究要解决的现实问题与提出背景1.2研究所要解决的问题类别1.3正反例对比关联:和前人的工作有什么关系?3.总结归纳3.1总结收获3.2探索思考4.WHAT——核心发现或论点5.HOW——研究过程、创新与关键数据6.HOWGOOD——理论贡献与实践意义解法拆解1.1
字符串模式匹配——Brute-Force暴力查找算法以及KMP算法具象图解,超级详细!!
Elnaij
算法数据结构c语言
目录前言1.串的模式匹配算法目的1.1Brute-Force算法图解Brute-force算法Brute-force暴力查找算法的弊端1.2KMP算法next数组1.2.1Getnext——求next数组的函数图解Getnext函数Getnext函数总结1.2.2KMP模式匹配操作KMP匹配过程图解KMP算法总结结束语:前言这两个算法,尤其是KMP算法,可以说是让许多算法小白头痛的了。如果你也十分
电子电气架构 --- 汽车面对软件怎么“破局“?
车载诊断技术
思考汽车行业架构汽车汽车面对软件怎么破局电子电器框架人工智能数据库智能电动汽车概述
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:人生是一场骗局,最大的任务根本不是什么买车买房,也不是及时行乐,这就是欲望,不是理想,是把自己对生命的希望寄托在外物上,正确的做法应该是内求,无论遇到什么坎坷都能够随时调动自己的能力,出生没办法选择,婚姻也只能靠运气,唯一能让自己过好这一生的本领就是看待世界的方法,这世界看似纷纷扰扰
算法模型从入门到起飞系列——八大排序算法(二)
小小面试官
算法模型算法排序算法java
上篇文章详细的描述了四种简单的排序算法及其优化的一些方案,其实比起基本的排序算法,我觉得学习者更应该掌握优化后的排序算法甚至希望可以在评论区上看到更多不同的解法,只要是自己去深入研究的,都可以放到评论区一起探讨甚至给博主纠正。下面就是要详细刨析另外四种不常见的排序算法,性能更高,但是其实真正的使用场景偏少。文章目录一、常见八大排序算法性能对比二、归并排序(MergeSort)2.1归并排序核心思想
最大公因数与最小公倍数的关系(公式推导)
Geometry Fu
最大公因数最小公倍数
最大公因数与最小公倍数公式概览a,ba,ba,b的最小公倍数lcm(a,b)lcm(a,b)lcm(a,b)a,ba,ba,b的最大公因数gcd(a,b)gcd(a,b)gcd(a,b)a,b,ca,b,ca,b,c的最小公倍数lcm(lcm(a,b),c)lcm(lcm(a,b),c)lcm(lcm(a,b),c)(二者先求最小公倍数,结果与第三个数求最小公倍数)a,b,ca,b,ca,b,c的
微服务 vs 单体架构:你应该选择哪种模式?
测试者家园
IT求职面试测试开发和测试质量效能架构微服务云原生智能化测试软件测试人工智能质量效能
用ChatGPT做软件测试软件架构从来都不只是技术选型,更是对企业战略、团队能力和业务模型的深刻反映。微服务和单体架构之争,表面上是技术模式的对比,实则映射着对复杂性管理、敏捷响应和可持续发展的不同认知与选择。今天,当“云原生”、“容器化”、“分布式”成为行业热词,微服务被推上了神坛。然而,单体架构真的过时了吗?微服务就注定是未来的唯一解法吗?如果你仍然在为“选择哪种架构”而困惑,这篇文章将带你跳
洛谷 P1923:【深基9.例4】求第 k 小的数 ← 快读
hnjzsyjyj
信息学竞赛#STL标准库数据结构快读
【题目来源】https://www.luogu.com.cn/problem/P1923【题目描述】输入n(1≤n'9'){//!isdigit(c)if(c=='-')f=-1;c=getchar();}while(c>='0'&&cusingnamespacestd;constintmaxn=5e6+5;inta[maxn];intread(){//fastreadintx=0,f=1;cha
【华为OD-E卷-02 最多提取子串数目100分(python、java、c++、js、c)】
CodeClimb
算法题华为od(A+B+C+D+E卷)收录分享华为odpythonjavac++javascript
【华为OD-E卷-最多提取子串数目100分(python、java、c++、js、c)】题目给定[a-z],26个英文字母小写字符串组成的字符串A和B,其中A可能存在重复字母,B不会存在重复字母,现从字符串A中按规则挑选一些字母,可以组成字符串B。挑选规则如下:同一个位置的字母只能挑选一次被挑选字母的相对先后顺序不能被改变求最多可以同时从A中挑选多少组能组成B的字符串。输入描述输入为2行,第1行输
【C++经典例题】反转字符串中单词的字符顺序:两种实现方法详解
倔强的石头_
C++经典例题c++java算法
博客主页:倔强的石头的CSDN主页Gitee主页:倔强的石头的gitee主页⏩文章专栏:C++经典例题期待您的关注目录问题描述基于快慢指针的解法基于索引的解法两种方法的比较问题描述在处理字符串相关的问题时,反转字符串中每个单词的字符顺序是一个常见的任务,同时要保证空格和单词的初始顺序不变。给定一个字符串s,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。s包含可打印的ASCI
动态规划-第4篇
藤椒味的火腿肠真不错
动态规划算法
19.最⼤⼦数组和(medium)1.题⽬链接:53.最大子数组和-力扣(LeetCode)2..解法(动态规划):算法思路:1.状态表⽰:对于线性dp,我们可以⽤「经验+题⽬要求」来定义状态表⽰:i.以某个位置为结尾,巴拉巴拉;ii.以某个位置为起点,巴拉巴拉。这⾥我们选择⽐较常⽤的⽅式,以「某个位置为结尾」,结合「题⽬要求」,定义⼀个状态表⽰:dp[i]表⽰:以i位置元素为结尾的「所有⼦数组」
最大公因数/最大公倍数
X_Eartha_815
C++/算法/数据结构算法数据结构
目录一、最大公因数-辗转相除法二、最大公倍数-(有了最大公因数)最多个数的最大公倍数三、实战-L1-009N个数求和思路:代码:一、最大公因数-辗转相除法递归-精简形式intgcd(inta,intb)//求最大公约数{returnb==0?a:gcd(b,a%b);}二、最大公倍数-(有了最大公因数)//最大公倍数intgcm(inta,intb){intgcds=b==0?a:gcd(b,a%
人工智能与机器学习入门:基尼系数(Gini Index)和基于熵(Entropy)
基尼系数基于熵机器学习入门
在决策树应用一文中,在构建决策分类树应用决策算法时,介绍了基尼系数(GiniIndex)和基于熵(Entropy)两种算法。本文通过实例来更加深入的介绍一下这两个算法。仍然以简单的数据为例:id喜欢颜色是否有喉结身高性别1绿否165女2蓝是170男3粉否172女4绿是175男基尼系数分别对喜欢颜色是否有喉结求基尼系数如下:喜欢的颜色id喜欢颜色性别1绿女2蓝男3粉女4绿男对于姓别女分类而言,数据如
mysql 聚合函数求乘积_mysql-聚合函数
数据-黄大大
mysql聚合函数求乘积
mysql中聚合函数其实只有5个,1.COUNT()函数:用来统计记录的条数;2.SUM()函数:是求和函数;3.AVG()函数:是求平均值的函数;4.MAX()函数是求最大值的函数5.MIN()函数是求最小值的函数具体的实列:/*SQLyog企业版-MySQLGUIv8.14MySQL-5.1.49-community***************************************
笔记:代码随想录算法训练营Day65:LeetCode115.不同的子序列\583. 两个字符串的删除操作\72. 编辑距离
jingjingjing1111
算法数据结构leetcode动态规划
学习资料:代码随想录115.不同的子序列力扣题目链接递推公式:求的是个数而不是长度,dp[i-1][j]代表的是用i-2为结尾的s的子序列去能凑出j-1为结尾的t的子序列的方法数,代表的是dp[i][j]的上一状态,当s[i-1]==t[i-1],说明可以从dp[i-1][j-1]的代表的用i-2为结尾的s的子序列去能凑出j-2为结尾的t的子序列的方法数方法数状态各加一个数抵达dp[i][j]代表
笔记:代码随想录算法训练营day55:LeetCode42. 接雨水、84.柱状图中最大的矩形
jingjingjing1111
算法
学习资料:代码随想录42.接雨水力扣题目链接暴力解法超时了,直接从双指针开始双指大概思路为创立两个数组记录两侧的最大值,这里的最大值是真正的最大的值,而不是最近的那个比较大的值,即所谓的按列计算,后面单调栈方法找到的是上一个较大值和下一个较大值,是所谓的按行计算,这样这个凹槽可能身处更大的凹槽中,所以每次都要乘一个宽度,类似与按层往上摞classSolution{public:inttrap(ve
LeetCode 第6题:Z字形变换(Python3解法)
little student
LeetCodeleetcode算法职场和发展
文章目录1:问题描述2:问题分析2.1时间复杂度和空间复杂度2.2二维矩阵2.2.1构建矩阵2.2.2判断位置2.2.3边界2.2.4代码2.3改进的二维矩阵2.3.1代码2.4构造法2.4.1代码1:问题描述来源:LeetCode难度:中等问题详情:将一个给定字符串s根据给定的行数numRows,以从上往下、从左到右进行Z字形排列。比如输入字符串为“PAYPALISHIRING”行数为3时,排列
LeetCode34. 在排序数组中查找元素的第一个和最后一个位置 - Java & Go - 二分查找改进
暴风星云裂之我裂开了
LeetCode题解leetcodejavagolang二分查找
文章目录LeetCode34.在排序数组中查找元素的第一个和最后一个位置解法11算法2Java3Go解法21算法2Java3GoLeetCode34.在排序数组中查找元素的第一个和最后一个位置LeetCode34.在排序数组中查找元素的第一个和最后一个位置解法11算法算法1.两次二分查找2.第一次二分查找计算mid=(left+right)>>1;,每次mid都偏向左边,可以保证找到的是第一个大于
代码随想录算法训练营| 总结篇
Rachela_z
算法
坚持了六十多天的算法,回头看感觉收获很大。之前刷题不管算法,只管能不能a,没有章法,只有一套乱拳,现在看到题目,会想着思考分析一下,可以用什么方法,用什么思路来解决。接下来要把力扣上的热题多刷反复刷!要做到看到题目能够有解法思路!春招接offer!offer四面八方来!!!
关于旗正规则引擎中的MD5加密问题
何必如此
jspMD5规则加密
一般情况下,为了防止个人隐私的泄露,我们都会对用户登录密码进行加密,使数据库相应字段保存的是加密后的字符串,而非原始密码。
在旗正规则引擎中,通过外部调用,可以实现MD5的加密,具体步骤如下:
1.在对象库中选择外部调用,选择“com.flagleader.util.MD5”,在子选项中选择“com.flagleader.util.MD5.getMD5ofStr({arg1})”;
2.在规
【Spark101】Scala Promise/Future在Spark中的应用
bit1129
Promise
Promise和Future是Scala用于异步调用并实现结果汇集的并发原语,Scala的Future同JUC里面的Future接口含义相同,Promise理解起来就有些绕。等有时间了再仔细的研究下Promise和Future的语义以及应用场景,具体参见Scala在线文档:http://docs.scala-lang.org/sips/completed/futures-promises.html
spark sql 访问hive数据的配置详解
daizj
spark sqlhivethriftserver
spark sql 能够通过thriftserver 访问hive数据,默认spark编译的版本是不支持访问hive,因为hive依赖比较多,因此打的包中不包含hive和thriftserver,因此需要自己下载源码进行编译,将hive,thriftserver打包进去才能够访问,详细配置步骤如下:
1、下载源码
2、下载Maven,并配置
此配置简单,就略过
HTTP 协议通信
周凡杨
javahttpclienthttp通信
一:简介
HTTPCLIENT,通过JAVA基于HTTP协议进行点与点间的通信!
二: 代码举例
测试类:
import java
java unix时间戳转换
g21121
java
把java时间戳转换成unix时间戳:
Timestamp appointTime=Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:m
web报表工具FineReport常用函数的用法总结(报表函数)
老A不折腾
web报表finereport总结
说明:本次总结中,凡是以tableName或viewName作为参数因子的。函数在调用的时候均按照先从私有数据源中查找,然后再从公有数据源中查找的顺序。
CLASS
CLASS(object):返回object对象的所属的类。
CNMONEY
CNMONEY(number,unit)返回人民币大写。
number:需要转换的数值型的数。
unit:单位,
java jni调用c++ 代码 报错
墙头上一根草
javaC++jni
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000777c3290, pid=5632, tid=6656
#
# JRE version: Java(TM) SE Ru
Spring中事件处理de小技巧
aijuans
springSpring 教程Spring 实例Spring 入门Spring3
Spring 中提供一些Aware相关de接口,BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,其中最常用到de匙ApplicationContextAware.实现ApplicationContextAwaredeBean,在Bean被初始后,将会被注入 Applicati
linux shell ls脚本样例
annan211
linuxlinux ls源码linux 源码
#! /bin/sh -
#查找输入文件的路径
#在查找路径下寻找一个或多个原始文件或文件模式
# 查找路径由特定的环境变量所定义
#标准输出所产生的结果 通常是查找路径下找到的每个文件的第一个实体的完整路径
# 或是filename :not found 的标准错误输出。
#如果文件没有找到 则退出码为0
#否则 即为找不到的文件个数
#语法 pathfind [--
List,Set,Map遍历方式 (收集的资源,值得看一下)
百合不是茶
listsetMap遍历方式
List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
List接口有三个实现类:LinkedList,ArrayList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身
解决SimpleDateFormat的线程不安全问题的方法
bijian1013
javathread线程安全
在Java项目中,我们通常会自己写一个DateUtil类,处理日期和字符串的转换,如下所示:
public class DateUtil01 {
private SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public void format(Date d
http请求测试实例(采用fastjson解析)
bijian1013
http测试
在实际开发中,我们经常会去做http请求的开发,下面则是如何请求的单元测试小实例,仅供参考。
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import
【RPC框架Hessian三】Hessian 异常处理
bit1129
hessian
RPC异常处理概述
RPC异常处理指是,当客户端调用远端的服务,如果服务执行过程中发生异常,这个异常能否序列到客户端?
如果服务在执行过程中可能发生异常,那么在服务接口的声明中,就该声明该接口可能抛出的异常。
在Hessian中,服务器端发生异常,可以将异常信息从服务器端序列化到客户端,因为Exception本身是实现了Serializable的
【日志分析】日志分析工具
bit1129
日志分析
1. 网站日志实时分析工具 GoAccess
http://www.vpsee.com/2014/02/a-real-time-web-log-analyzer-goaccess/
2. 通过日志监控并收集 Java 应用程序性能数据(Perf4J)
http://www.ibm.com/developerworks/cn/java/j-lo-logforperf/
3.log.io
和
nginx优化加强战斗力及遇到的坑解决
ronin47
nginx 优化
先说遇到个坑,第一个是负载问题,这个问题与架构有关,由于我设计架构多了两层,结果导致会话负载只转向一个。解决这样的问题思路有两个:一是改变负载策略,二是更改架构设计。
由于采用动静分离部署,而nginx又设计了静态,结果客户端去读nginx静态,访问量上来,页面加载很慢。解决:二者留其一。最好是保留apache服务器。
来以下优化:
java-50-输入两棵二叉树A和B,判断树B是不是A的子结构
bylijinnan
java
思路来自:
http://zhedahht.blog.163.com/blog/static/25411174201011445550396/
import ljn.help.*;
public class HasSubtree {
/**Q50.
* 输入两棵二叉树A和B,判断树B是不是A的子结构。
例如,下图中的两棵树A和B,由于A中有一部分子树的结构和B是一
mongoDB 备份与恢复
开窍的石头
mongDB备份与恢复
Mongodb导出与导入
1: 导入/导出可以操作的是本地的mongodb服务器,也可以是远程的.
所以,都有如下通用选项:
-h host 主机
--port port 端口
-u username 用户名
-p passwd 密码
2: mongoexport 导出json格式的文件
[网络与通讯]椭圆轨道计算的一些问题
comsci
网络
如果按照中国古代农历的历法,现在应该是某个季节的开始,但是由于农历历法是3000年前的天文观测数据,如果按照现在的天文学记录来进行修正的话,这个季节已经过去一段时间了。。。。。
也就是说,还要再等3000年。才有机会了,太阳系的行星的椭圆轨道受到外来天体的干扰,轨道次序发生了变
软件专利如何申请
cuiyadll
软件专利申请
软件技术可以申请软件著作权以保护软件源代码,也可以申请发明专利以保护软件流程中的步骤执行方式。专利保护的是软件解决问题的思想,而软件著作权保护的是软件代码(即软件思想的表达形式)。例如,离线传送文件,那发明专利保护是如何实现离线传送文件。基于相同的软件思想,但实现离线传送的程序代码有千千万万种,每种代码都可以享有各自的软件著作权。申请一个软件发明专利的代理费大概需要5000-8000申请发明专利可
Android学习笔记
darrenzhu
android
1.启动一个AVD
2.命令行运行adb shell可连接到AVD,这也就是命令行客户端
3.如何启动一个程序
am start -n package name/.activityName
am start -n com.example.helloworld/.MainActivity
启动Android设置工具的命令如下所示:
# am start -
apache虚拟机配置,本地多域名访问本地网站
dcj3sjt126com
apache
现在假定你有两个目录,一个存在于 /htdocs/a,另一个存在于 /htdocs/b 。
现在你想要在本地测试的时候访问 www.freeman.com 对应的目录是 /xampp/htdocs/freeman ,访问 www.duchengjiu.com 对应的目录是 /htdocs/duchengjiu。
1、首先修改C盘WINDOWS\system32\drivers\etc目录下的
yii2 restful web服务[速率限制]
dcj3sjt126com
PHPyii2
速率限制
为防止滥用,你应该考虑增加速率限制到您的API。 例如,您可以限制每个用户的API的使用是在10分钟内最多100次的API调用。 如果一个用户同一个时间段内太多的请求被接收, 将返回响应状态代码 429 (这意味着过多的请求)。
要启用速率限制, [[yii\web\User::identityClass|user identity class]] 应该实现 [[yii\filter
Hadoop2.5.2安装——单机模式
eksliang
hadoophadoop单机部署
转载请出自出处:http://eksliang.iteye.com/blog/2185414 一、概述
Hadoop有三种模式 单机模式、伪分布模式和完全分布模式,这里先简单介绍单机模式 ,默认情况下,Hadoop被配置成一个非分布式模式,独立运行JAVA进程,适合开始做调试工作。
二、下载地址
Hadoop 网址http:
LoadMoreListView+SwipeRefreshLayout(分页下拉)基本结构
gundumw100
android
一切为了快速迭代
import java.util.ArrayList;
import org.json.JSONObject;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayo
三道简单的前端HTML/CSS题目
ini
htmlWeb前端css题目
使用CSS为多个网页进行相同风格的布局和外观设置时,为了方便对这些网页进行修改,最好使用( )。http://hovertree.com/shortanswer/bjae/7bd72acca3206862.htm
在HTML中加入<table style=”color:red; font-size:10pt”>,此为( )。http://hovertree.com/s
overrided方法编译错误
kane_xie
override
问题描述:
在实现类中的某一或某几个Override方法发生编译错误如下:
Name clash: The method put(String) of type XXXServiceImpl has the same erasure as put(String) of type XXXService but does not override it
当去掉@Over
Java中使用代理IP获取网址内容(防IP被封,做数据爬虫)
mcj8089
免费代理IP代理IP数据爬虫JAVA设置代理IP爬虫封IP
推荐两个代理IP网站:
1. 全网代理IP:http://proxy.goubanjia.com/
2. 敲代码免费IP:http://ip.qiaodm.com/
Java语言有两种方式使用代理IP访问网址并获取内容,
方式一,设置System系统属性
// 设置代理IP
System.getProper
Nodejs Express 报错之 listen EADDRINUSE
qiaolevip
每天进步一点点学习永无止境nodejs纵观千象
当你启动 nodejs服务报错:
>node app
Express server listening on port 80
events.js:85
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at exports._errnoException (
C++中三种new的用法
_荆棘鸟_
C++new
转载自:http://news.ccidnet.com/art/32855/20100713/2114025_1.html
作者: mt
其一是new operator,也叫new表达式;其二是operator new,也叫new操作符。这两个英文名称起的也太绝了,很容易搞混,那就记中文名称吧。new表达式比较常见,也最常用,例如:
string* ps = new string("
Ruby深入研究笔记1
wudixiaotie
Ruby
module是可以定义private方法的
module MTest
def aaa
puts "aaa"
private_method
end
private
def private_method
puts "this is private_method"
end
end